package com.jichangxiu.server.platform.service;

import com.jichangxiu.common.entity.bo.PageData;
import com.jichangxiu.framework.mybatis.BaseService;
import com.jichangxiu.server.platform.entity.dto.PlatformRoleQueryDto;
import com.jichangxiu.server.platform.entity.po.PlatformRole;
import com.jichangxiu.server.platform.entity.vo.PlatformRoleAddVo;
import com.jichangxiu.server.platform.entity.vo.PlatformRoleAuthEditVo;
import com.jichangxiu.server.platform.entity.vo.PlatformRoleEditVo;
import com.jichangxiu.server.platform.entity.vo.PlatformRoleQueryVo;

import javax.validation.constraints.NotBlank;
import java.util.List;

/**
 * PlatformRoleService:
 *
 * @author Jcx
 * @create 2023-03-08 21:14
 */
public interface PlatformRoleService extends BaseService<PlatformRole> {

    /**
     * 新增角色
     *
     * @param platformRoleAddVo 角色视图对象
     * @return 是否成功
     */
    public Boolean add(PlatformRoleAddVo platformRoleAddVo);

    /**
     * 多选级联删除角色
     *
     * @param roleIdList 角色ID列表
     * @return 是否成功
     */
    public Boolean del(List<String> roleIdList);

    /**
     * 修改角色信息
     *
     * @param platformRoleEditVo 角色视图对象
     * @return 是否成功
     */
    public Boolean edit(PlatformRoleEditVo platformRoleEditVo);

    /**
     * 更新角色菜单和数据权限
     *
     * @param platformRoleAuthEditVo 角色权限视图对象
     * @return 是否成功
     */
    public Boolean updateRoleMenuAndDataAuth(PlatformRoleAuthEditVo platformRoleAuthEditVo);

    /**
     * 根据ID获取角色详情
     *
     * @param roleId 角色ID
     * @return 角色详情
     */
    public PlatformRoleQueryDto info(@NotBlank(message = "角色ID不能为空") String roleId);

    /**
     * 根据租户ID和用户ID获取该用户所拥有的角色列表
     *
     * @param tenantId 租户ID
     * @param userId   用户ID
     * @return 角色列表
     */
    public List<PlatformRoleQueryDto> getRoleListByUser(String tenantId, String userId);

    /**
     * 分页查询角色列表
     *
     * @param platformRoleQueryVo 角色视图对象
     * @return 分页角色列表
     */
    public PageData<PlatformRoleQueryDto> pageList(PlatformRoleQueryVo platformRoleQueryVo);

}
